var async = {
    done: function(key, callback, result, taskCount) {
        return function(err, data) {
            var index = 0;
            result[key] = data;
            for(var item in result) {
                index++;
                if(index == taskCount) {
                    callback(null, result);
                }
            }
        }
    },
    parallel : function(config, callback) {
        var result = {};
        var taskCount = 0;
        for(var key in config) {
            taskCount++;
        }
        for(var key in config) {
            config[key](this.done(key, callback, result, taskCount));
        }
    }
}